With the advent of mobile computing, business professionals use multiple computing devices throughout the business day. For example, a business professional may use a desktop computer while at the office, a laptop computer while traveling on business, and a personal digital assistant (“PDA”) while on a sales call. It is often necessary for the business professional to have access to the same data, regardless of which computing device the business professional is using. For example, a sales person will need access to pricing data on both his desktop computer and his laptop computer.
Over time, the data on the desktop computer, such as pricing data, may be changed and become inconsistent with the data on the laptop computer. Or, new information, such as a purchase order, may be entered on the laptop computer and not be consistent with sales data on the desktop computer. Using multiple devices for entering and storing common data requires synchronizing the data across the multiple devices to ensure that each device has the most current values for the data.
A user typically has both a principal computing platform that he uses as his main computing device to add, change, or delete data and one or more auxiliary computing platforms that he may also use to add, change, or delete data. The principal or auxiliary platforms may run Linux®, Windows®, MacOS®, Symbian®, Windows Mobile PocketPC®, or Palm® operating systems.
Currently, synchronization requires underlying synchronization software that depends on the specific computing platform needing synchronization. For example, Microsoft provides Activesync® synchronization software to synchronize data between applications such as Outlook® on principal platforms and auxiliary computing platforms running the Microsoft Windows Mobile PocketPC® operating system.
Underlying synchronization software tends to be closed, not allowing users or developers much control of the synchronization process. For example, most existing underlying synchronization software cannot perform synchronization between different types of objects. Software developers of an application on a principal computing platform may define a data object type on the principal computing platform differently from software developers of another application on an auxiliary computing platform. This may happen if the applications were not designed initially to have synchronized data objects. For example, if a given object on the auxiliary computing platform is defined as a “string” object type, and its corresponding object on the principal computing platform is defined as a “date” object type, conventional synchronization software would report an error on attempts to synchronize this object.
In addition, existing synchronization software does not enable a user or developer to set transaction boundaries. Thus, if a portion of a synchronization of an object or set of objects in a single transaction fails, synchronization of the entire transaction may fail and force a rollback to a previous state.
Existing synchronization software, such as Activesync, may permit plug-ins to allow third party applications a conduit to synchronize data between applications on principal and auxiliary computing platforms, but these plug-ins are usually written for specific third-party applications and specific synchronization software. The plug-ins usually depend heavily on the underlying synchronization software, such as Activesync, and the platforms, so changes to the underlying synchronization software, the auxiliary computing platform, or the third party application may require completely rewriting the plug-in. Moreover, multiple applications cannot easily use the same plug-in to transfer and synchronize data.